package com.hmy.finance.service.statement.dto;


import com.hmy.finance.dal.po.json.ContractExtensionInfoJson;
import com.hmy.finance.dal.po.json.CustomerExtensionInfoJson;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 *
 */
@Data
public class CreateStatementDeviceDto {

    /**
     * 设备租赁记录ID
     */
    private Long deviceRentalRecordId;

    /**
     * 合同id
     */
    private Long contractId;

    /**
     * 合同编号
     */
    private String contractNo;

    /**
     * 设备id
     */
    private Long deviceId;

    /**
     * 设备编号
     */
    private String deviceNo;

    /**
     * 设备型号
     */
    private String deviceModel;

    /**
     * 设备状态:在租；退租;
     */
    private String deviceStatementStatusDesc;

    /**
     * 当前租金单价(每天)
     */
    private BigDecimal rentalUnitPrice;

    /**
     * 是否使用月租金价格
     */
    private Boolean useMonthlyRentalPrice = false;

    /**
     * 历史已签署的账单金额
     */
    private BigDecimal signedRentFee = BigDecimal.ZERO;

    /**
     * 当前租金价格:日转月之前为日租金(每日价格)，日转月之后是月租金(每月价格)
     */
    private BigDecimal rentalPrice;

    /**
     * 月租单价(一个月的价格，不是一天的价格)
     */
    private BigDecimal monthlyRentalPrice;

    /**
     * 入场首日租金
     */
    private BigDecimal initialDayRentFee = BigDecimal.ZERO;

    /**
     * 入场首日计费天数
     */
    private Double initialDay = 1.0;

    /**
     * 日租单价
     */
    private BigDecimal dailyRentalPrice;

    /**
     * 本期账单租金起算时间
     */
    private LocalDateTime currentRentalStartTime;

    /**
     * 本期账单租金结束时间
     */
    private LocalDateTime currentRentalEndTime;

    /**
     * 客户扩展信息
     */
    private CustomerExtensionInfoJson customerExtensionInfo;

    /**
     * 合同扩展信息
     */
    private ContractExtensionInfoJson contractExtensionInfo;

    /**
     * 上次对账截止日期
     */
    private LocalDateTime lastReconciliationTime;

    /**
     * 设备进场起租时间
     */
    private LocalDateTime deviceBeginRentTime;

    /**
     * 设备退场时间,可能为null
     */
    private LocalDateTime deviceEndRentTime;

    /**
     * 设备流水周期结束时间(设备退场未审批结束情况下，可能产生流水，此为流水结束时间)
     */
    private LocalDateTime expenseCycleEndTime;

    /**
     * 前端传入的予定查询开始时间
     */
    private LocalDateTime setPreStartTime;

    /**
     * 前端传入的予定查询结束时间
     */
    private LocalDateTime setPreEndTime;

}
